Zabbix之自动发现与自动注册(Hostname/HostnameItem和HostMetadata和HostMetadataItem配置项的说明)

您所在的位置:网站首页 zabbix server 监控自己 Zabbix之自动发现与自动注册(Hostname/HostnameItem和HostMetadata和HostMetadataItem配置项的说明)

Zabbix之自动发现与自动注册(Hostname/HostnameItem和HostMetadata和HostMetadataItem配置项的说明)

2023-12-28 22:33| 来源: 网络整理| 查看: 265

文章目录 一、概述二、自动发现(被动模式)配置三、自动注册(主动模式)配置四、Hostname/HostnameItem与HostMetadata/HostMetadataItem相关项(一)Hostname和HostnameItem(二)HostMetadata和HostMetadataItem(三)RefreshActiveChecks

一、概述

手动添加客户端非常耗时间,增加人力、时间成本。为了满足监控企业成千上万台服务器,zabbix提供了自动发现与自动注册的功能,自动批量发现局域网中的服务器,并自动添加到zabbix监控平台

自动发现(被动模式):由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。实现自动将发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(item)、自动创建图像等功能。缺点:当 Agent服务器过多的时候采用自动发现,zabbix-server压力会比较大,自动添加主机进度就会非常慢。

自动注册(主动模式):Zabbix Server 等待 Zabbix Agent主动上报。由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表。对于使用SNMP的要采用自动发现。缺点:agent有可能找不到Server。

PS:主动还是被动是基于agent而言,不管是主动还是被动模式都是在agent端进行配置

二、自动发现(被动模式)配置

客户端安装zabbix-agent,并配置

[root@test01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config [root@test01 ~]# setenforce 0 [root@test01 ~]# systemctl stop firewalld [root@test01 ~]# systemctl disable firewalld [root@test01 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm [root@test01 ~]# vim /etc/zabbix/zabbix_agentd.conf [root@test01 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 DenyKey=system.run[*] Server=192.168.126.70 ListenPort=10050 # ServerActive= # Hostname= Include=/etc/zabbix/zabbix_agentd.d/*.conf

注:

自动发现会根据客户端的主机名来配置WEB端名称。如果该配置文件中 Hostname 配置的值与主机名不一致,那么在zabbix的web监控页面是以真实的主机名来命名。

如果你没有在zabbix_agentd.conf中特别定义Hostname, 则服务器将使用agent的系统主机名命名主机。Linux中的系统主机名可以通过运行hostname命令获取。最后成功添加的主机名称也是该选项设置的值。

Server 和 ServerActive 都指定 zabbix_server 的 IP 地址,不同的是,前者是自动发现(被动模式)开启的,后者是自动注册(主动模式)开启的。也就是说 Server 这个配置是用来允许 192.168.126.70 这个 ip 的zabbix-server来获取当前zabbix-agent的数据。而serverActive = 192.168.126.70 的意思是,zabbix-agent客户端主动提交数据给zabbix-server端。

启动zabbix-agent

[root@test01 ~]# systemctl start zabbix-agent [root@test01 ~]# ss -alnutp | grep 10050 tcp LISTEN 0 128 *:10050 *:* users:(("zabbix_agentd",pid=3350,fd=4),("zabbix_agentd",pid=3349,fd=4),("zabbix_agentd",pid=3348,fd=4),("zabbix_agentd",pid=3347,fd=4),("zabbix_agentd",pid=3346,fd=4)) tcp LISTEN 0 128 :::10050 :::* users:(("zabbix_agentd",pid=3350,fd=5),("zabbix_agentd",pid=3349,fd=5),("zabbix_agentd",pid=3348,fd=5),("zabbix_agentd",pid=3347,fd=5),("zabbix_agentd",pid=3346,fd=5))

WEB界面配置

web界面:配置 >> 自动发现 >> 创建发现规则在这里插入图片描述 配置转发规则 >> 添加 在这里插入图片描述

创建动作:配置 >> 动作 >> Discovery actions >> 创建动作 在这里插入图片描述 配置触发动作 在这里插入图片描述

条件可以根据自己的环境需求或客户端的特点来进行添加。

配置主动发现主机后的动作 在这里插入图片描述

即:配置的是发现客户端主机后将主机添加到web管控界面来,并添加到指定的群组,同时应用指定的模版进行关联(还可根据自己需求进行需要的添加)

最后等待主机上线即可。

查看自动发现的结果状态 在这里插入图片描述

显示已经发现一个符合自己条件的客户端主机

查看是否添加到web管控界面 在这里插入图片描述

添加及关联成功

三、自动注册(主动模式)配置

使用自动注册必须确保关掉自动发现功能

客户端安装zabbix-agent,并配置

[root@daemon01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config [root@daemon01 ~]# setenforce 0 [root@daemon01 ~]# systemctl stop firewalld [root@daemon01 ~]# systemctl disable firewalld [root@daemon01 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm [root@daemon01 ~]# vim /etc/zabbix/zabbix_agentd.conf [root@daemon01 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 DenyKey=system.run[*] Server Active=192.168.126.70 ListenPort=10050 Include=/etc/zabbix/zabbix_agentd.d/*.conf

当agent程序向服务器发送自动注册请求时,会发送其主机名。在某些情况下,Zabbix服务器的主机名不足以区分发现的主机。主机元数据可将其他信息从agent发送到服务器。 主机元数据在zabbix_agentd.conf中配置。在配置文件中指定主机元数据有两种方式:(两种不能同时用)

HostMetadata= # 静态主机元数据,用户自定义字符串 HostMetadataItem= # 动态主机元数据,通过key获取。通常使用system.uname

创建自动注册

配置 > 动作 > Autoregistration actions 在这里插入图片描述 定义筛选注册主机条件 在这里插入图片描述

定义注册上来的主机所要关联的操作

在这里插入图片描述

关于配置自动注册的操作时,以上配置的意思是将发现到的主机添加到web管理界面,同时添加到 Linux servers 主机群组中,同时关联自己指定的模版。在这里要说明的是,自动注册的主机除了自己在这里配置的添加到指定的主机群组中,同时每个被自动发现的主机都会被添加到一个名为 Discovered hosts主机群组中。如果在自动注册时不想添加到这个群组中,可以在 【管理】> 【一般】> 【其他配置参数】中进行配置

在这里插入图片描述

查看自动注册功能是否启用

在这里插入图片描述 等待主机上线

在这里插入图片描述

添加成功,并且群组及模版关联成功,可用性也为可用状态

四、Hostname/HostnameItem与HostMetadata/HostMetadataItem相关项 (一)Hostname和HostnameItem

HostnameItem 作用其实和Hostname是一样的,不过该项是动态的,其支持通过key进行配置,如system.hostname 。当然也支持其他key,只要是zabbix_get能正常取的数据的key理论都是支持的,但并不表示都能用,比如将HostnameItem的值设置为system.uname时,在启动时就报了里面使用特殊字符#,这是不允许的。

如果未配置 HostnameItem=system.hostname 和 Hostname=xxx 这两个参数,那么在web监控页面显示的主机的可见名称为 客户端主机的主机名(即通过 hostname 命令得到的结果)

如果配置 Hostname=xxx 而未 HostnameItem=system.hostname 参数,那么在web监控页面显示的主机的可见名称为 xxx

如果配置 HostnameItem=system.hostname 而未配置 Hostname=xxx 参数,那么在web监控页面显示的主机的可见名称为 客户端主机的主机名(即通过 hostname 命令得到的结果)。

如果同时配置 HostnameItem=system.hostname 和 Hostname=xxx 参数,那么在web监控页面显示的主机的可见名称为 xxx (即以配置文件中的Hostname 定义的为准)。即Hostname定义的值会覆盖HostnameItem定义的值,而且启动的时候也会有警告信息出现。在zabbix_agentd.conf文件中也有一行提示:Item used for generating Hostname if it is undefined. Ignored if Hostname is defined。如果两者同时启用,会出现如下信息:zabbix_agentd [21988]: Warning: both Hostname and HostnameItem defined, using…

Hostname 在主动模式(对于agent而言的,agent主动)时,会和服务器之间对Hostname信息,即web端配置的名称要和这个名称一致,才会成功。在使用被动模式时,实际上该参数是没用的。但该项配置后主机名称是固定的。

无论主动还是被动模式下,配置文件中都没有定义Hostname和HostnameItem配置项,那么web端会以主机的真正主机名(即通过hostname命令得到的主机名)作以显示;如果同时配置则以Hostname定义的值为准。不论是主动模式还是被动模式下,都不建议同时定义这两个配置项。

有人说这不是重复功能吗?因为默认情况下监控用的主机名一般都是system.hostname。实际上官方是有一些考量的,比如举一个场景,当我们要对一大批主机进行自动配置时,这里就可以使用HostnameItem ,所有的主机都使用一个模板进行批量部署,就避免了每台主机再去单独设置hostname的麻烦

(二)HostMetadata和HostMetadataItem

两者都是仅用于自动注册使用的,表示主机元数据,弥补hostname和hostnameItem的不足,用于进一步区分各个主机。

HostMetadata属于静态配置,用户自定义,即可以使用自定义的字符串,对不同类型的主机根据不同的字符串进行区分,甚至区分各主机上的服务。取值范围:0-255 字符,类型为字符串,utf8编码

HostMetadataItem属于动态配置,配置是使用的zabbix key。一般使用的是 system.uname

HostMetadata的优先级高于HostMetadataItem如果HostMetadata的值未定义,那么它的值默认为HostMetadataItem的值。

配置时,一般分为两步,第一步是在代理端(客户端)的zabbix_agentd.conf 文件中定义配置项。第二步,根据配置文件中的主机元数据,在web监控界面对自动注册的主机配置不同的动作。

官方说明:https://www.zabbix.com/documentation/4.0/manual/discovery/auto_registration

代理向服务器发送自动注册请求时,它将发送其主机名。在某些情况下(例如,Amazon云节点),主机名不足以使Zabbix服务器区分发现的主机。主机元数据可以可选地用于将其他信息从代理发送到服务器。

主机元数据在代理配置文件 zabbix_agentd.conf 中进行配置。有两种方法可以在配置文件中指定主机元数据:

# 主机元数据 HostMetadataItem=system.uname

比如:使用主机元数据区分Linux和Windows主机。

假设希望Zabbix服务器自动注册主机。网络上有Windows主机和Linux主机,并且Zabbix前端中提供了“ Template OS Linux”和“ Template OS Windows”模板。因此,在主机注册时,希望将适当的Linux / Windows模板应用于正在注册的主机。默认情况下,仅在自动注册时将主机名发送到服务器,这可能还不够。为了确保将正确的模板应用于主机,还应该使用主机元数据。

前端配置为:

首先要做的是配置前端。创建2个动作。

第一个动作:

名称:Linux主机自动注册条件:主机元数据包含Linux操作:链接到模板:模板OS Linux

第二个动作:

名称:Windows主机自动注册 条件:主机元数据包含Windows 操作:链接到模板:模板操作系统Windows

代理(客户端)配置为:

将下一行添加到代理配置文件中:

HostMetadataItem = system.uname

通过这种方式,您可以确保主机元数据将包含“ Linux”或“ Windows”,具体取决于代理所运行的主机。在这种情况下,主机元数据的示例:

Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32

对配置文件进行任何更改后,请不要忘记重新启动代理。

例子2

使用主机元数据可以提供一些基本保护,以防止不必要的主机注册。

前端配置 使用一些难以猜测的秘密代码在前端中创建操作,以禁止有害主机:

名称:自动注册动作Linux

条件:

计算类型:AND条件(A):主机元数据包含Linux条件(B):主机元数据包含21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

运作方式:

发送消息给用户:管理员通过所有媒体添加到主机组:Linux服务器链接到模板:模板OS Linux

代理配置

将下一行添加到代理配置文件:

HostMetadata = Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae (三)RefreshActiveChecks

每当客户端(或代理)发送请求以刷新活动到服务器时,都会进行自动注册尝试。请求之间的延迟是在代理的RefreshActiveChecks参数中指定的。代理重新启动后,立即发送第一个请求。

即多久时间(秒)刷新一次主动监控配置信息,如果刷新失败,那么根据定义的时间进行重试。取值范围:60-3600;单位:秒;默认:120秒



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3